软考真题
第12题
【说明】
现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。图6-1是某支付系统的简略类图。



【 C++代码 】

#include
#include 〈 vector
#include 〈 string
using namespace std;
class PaymentMethod {
public: virtual void pay( int cents ) = 0;
} ;
/* Cash、DebitCard和Item实现略,Item中getPrice()获取当前物品对象的价格 */
class Card : public PaymentMethod {
private: string name, num;
public:
	Card( string name, string num )
	{
		this->name = name; this->num = num;
	}


	string toString()
	{
		return this->getType() + " card[name = " + name + ",num = " + num + "]" ;)
	}


	void pay( int cents )
	{
		cout << "Payed " < () < this->executeTransaction( cents );
	}


protected:
	virtual string getType() = 0;


	virtual void (1) = 0 :
};
class CreditCard(2)
{
public:
	CreditCard( stringname, stringnum ) (3)
	{
	}
protected:
	string getType()
	{
		return " CREDIT " ;
	}


	void executeTransaction( int cents )
	{
		cout < () << " Card." << end1;
	}
};

class Bill {                    /* 包含所有购买商品的账单 */
private:
	vector< Item*> items;   /* 包含物品的 vector */
public:
	void add( Item* item )
	{
		items.push_back( item );
	}


	int getTotalPrice()                             /*计算所有item的总价格,代码略*/
	{
	}


	void pay( PaymentMethod* paymentMethod )        /* 用指定的支付方式完成支付 */
	{
		(4)( getTotalPrice() );
	}
};
class PaymentSystem {
public:
	void pay()
	{
		Bill	* bill	= new Bill();
		Item	* item1 = new Item "1234" 10); Item* item2 = new Item( "5678", 40 );
		bill->add( item1 ); bill->add( item2 );                 /* 将物品添加到账单中 */

		(5)( new CreditCard( "LI SI", "98765432101" ) );        /* 信用卡支付 */
	}
} ;
Intmain()
{
	(6) = new PaymentSystem();
	payment->pay() ;
	return(0);
}



【问题:6.1】 阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
第10章C 程序设计
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2019年 上半年 下午试卷 案例

笔记

请先在App中激活(应用市场搜“软考真题”)

2019-10-29


AchanZhang-

请先在App中激活(应用市场搜“软考真题”)

2023-05-25


软考真题

请先在App中激活(应用市场搜“软考真题”)

2022-05-07


Fei

请先在App中激活(应用市场搜“软考真题”)

2022-12-06


答题卡
加油
纠错
得分:0